package com.wyd.Template;

/**
 * 模板方法
 *
 * 抽象类，将具体的算法细节交给子类实现
 * @author Yudi Wang
 * @date 2022/1/30 11:40
 */
public abstract class Beverage {

    /**
     * 模板方法
     * 定义了算法的基本骨架
     */
    public final void  prepare(){
        boilWater();
        brew();
        pourIntoCup();
        addCondiments();
    }

    /**
     * 所有算法相同的步骤，在抽象父类中实现
     */
    public void boilWater(){
        System.out.println("boil water");
    }

    /**
     * 抽线方法，实现细节交给子类实现
     */
    public abstract void brew();

    public void pourIntoCup(){
        System.out.println("boil into cup");
    }

    /**
     * 抽线方法，实现细节交给子类实现
     */
    public abstract void addCondiments();
}
